﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using vudu.ClasesDominio;
using vudu.Datos.Fachada;
using vudu.Logica.Excepciones;

namespace vudu.Logica.Comandos
{
    public class ComandoConsultarMateriasPrematricula : Comando<List<Materia>>
    {
        private Estudiante _estudiante;
        private int _semestreActual;

        public Estudiante Estudiante
        {
            get { return _estudiante; }
            set { _estudiante = value; }
        }

        public int SemestreActual
        {
            get { return _semestreActual; }
            set { _semestreActual = value; }
        }

        public ComandoConsultarMateriasPrematricula(Estudiante estudiante, int semestreActual)
        {
            Estudiante = estudiante;
            SemestreActual = semestreActual;
        }
        public override List<Materia> Ejecutar()
        {
            EnlaceDatos controlador = new EnlaceDatos();
            List<Materia> misMaterias = controlador.ConsultarMateriasPrematriculas(Estudiante, SemestreActual);
            if (misMaterias.Count == 0)
            {
                throw new ConexionExeption("No se pudo encontrar materias para esta prematricula");
            }
            if (misMaterias == null)
            {
                throw new NoHayMateriasEnPrematriculaException("No se pudo establecer conexion con la base de datos.");
            }
            foreach (Materia materia in misMaterias)
            {
                materia.MisSecciones = controlador.ConsultarSeccionesDeUnaMateria(materia);
                foreach (SeccionMateria seccionMateria in materia.MisSecciones)
                {
                    seccionMateria.HorasClase = controlador.ConsultarHorarioDeClaseSeccion(seccionMateria);
                }
            }
            return misMaterias;
        }
    }
}